// 导入数据库模块
const db = require('../db/index')
// 导入bcryptjs
const bcrypt = require('bcryptjs')
// 导入配置文件
const config = require('../config')


// 获取用户基本信息的处理函数
exports.userInfo = (req, res)=>{
    // 定义sql语句，根据用户的id查询用户的基本信息
    const sql = 'select id, username, nickname, email, user_pic from ev_users where id = ?'
    db.query(sql, req.user.id, (err, results)=>{
        if(err){
            return res.cc(err) 
        } 
        //查询成功,但是查询到的数据条数不为1
        if(results.length !== 1){
            return res.cc('获取用户信息失败！')
        }
        res.send({
            status: 0,
            message: '获取用户信息成功',
            data: results[0]
        })
    })

}

// 更新用户的基本信息的处理函数
exports.updateUserInfo = (req, res)=>{
    // 接收表单数据
    const userInfo = req.body
    const sql_insert = 'update ev_users set nickname = ?, email = ? where id = ?'
    db.query(sql_insert, [userInfo.nickname, userInfo.email, req.user.id], (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.affectedRows !== 1){
            return res.cc('修改用户信息失败！')
        }
        // 更新成功
        res.cc('修改用户信息成功！', 0)
    })
}


// 重置密码
exports.updatepwd = (req, res)=>{
    const sql = 'select * from ev_users where id = ?'
    db.query(sql, req.user.id, (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.length !== 1){
            return res.cc('用户不存在')
        }
        //判断提交的旧密码是否正确
        const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)
        if(!compareResult){
            return res.cc('旧密码错误')
        }
        // 对新密码加密后，更新到数据库中
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
        const update_sql = 'update ev_users set password = ? where id = ?'
        db.query(update_sql, [newPwd, req.user.id], (err, results)=>{
            if(err){
                return res.cc(err)
            }
            if(results.affectedRows !== 1){
                return res.cc('更新密码失败！')
            }
            // 更新成功
            const token = req.headers['authorization'].split(' ')[1];
            // 将token添加到黑名单
            config.blacklistedTokens.push(token);
            res.cc('更新密码成功，请重新登录！', 0)
        })

    })


}


// 更新头像
exports.updateAvatar = (req, res)=>{
    const sql = 'update ev_users set user_pic = ? where id = ?'
    db.query(sql, [req.body.avatar, req.user.id], (err, results)=>{
        if(err){
            return res.cc(err)
        }
        if(results.affectedRows !== 1){
            return res.cc('更新头像失败！')
        }
        //更新用户头像成功
        return res.cc('更新头像成功！', 0)

    })
    

}